home *** CD-ROM | disk | FTP | other *** search
/ MacHack 2000 / MacHack 2000.toast / pc / The Hacks / MacHacksBug / Python 1.5.2c1 / Mac / Tools / macfreeze / macfreeze.py < prev    next >
Encoding:
Python Source  |  2000-06-23  |  2.2 KB  |  73 lines

  1. """macfreeze - Main program and GUI
  2.  
  3. macfreeze allows you to turn Python scripts into fully self-contained
  4. Mac applications, by including all the Python and C code needed in a single
  5. executable. Like unix/windows freeze it can produce a config.c allowing you
  6. to build the application with a development environment (CodeWarrior, to be
  7. precise), but unlike the standard freeze it is also possible to create frozen
  8. applications without a development environment, by glueing all the
  9. shared libraries and extension modules needed together in a single
  10. executable, using some Code Fragment Manager tricks."""
  11.  
  12. import macfs
  13. import sys
  14. import EasyDialogs
  15. import string
  16.  
  17. import macfreezegui
  18. import macmodulefinder
  19.  
  20. #
  21. # Here are the macfreeze directives, used when freezing macfreeze itself
  22. # (see directives.py for an explanation)
  23. #
  24. # macfreeze: path ::::Tools:freeze
  25. # macfreeze: exclude win32api
  26. #
  27.  
  28. def main():
  29.     if len(sys.argv) < 2:
  30.         gentype, program, output, debug = macfreezegui.dialog()
  31.     elif len(sys.argv) == 2:
  32.         gentype, program, output, debug = macfreezegui.dialog(sys.argv[1])
  33.     else:
  34.         EasyDialog.Message(
  35.           "Please pass a single script. Additional modules can be specified with directives")
  36.         sys.exit(0)
  37.     mustwait = process(gentype, program, output, debug=debug)
  38.     if mustwait:
  39.         sys.exit(1)
  40.  
  41. def process(gentype, program, output, modules=[], module_files=[], debug=0):
  42.     try:
  43.         module_dict = macmodulefinder.process(program, modules, module_files, debug)
  44.     except macmodulefinder.Missing, arg:
  45.         arg.sort()
  46.         print '** Missing modules:', string.join(arg, ' ')
  47.         sys.exit(1)
  48.     #
  49.     # And generate
  50.     #
  51.     if gentype == 'info':
  52.         import macgen_info
  53.         macgen_info.generate(output, module_dict)
  54.         return 1        # So the user can inspect it
  55.     elif gentype == 'source':
  56.         import macgen_src
  57.         warnings = macgen_src.generate(output, module_dict, debug)
  58.         return warnings
  59.     elif gentype == 'resource':
  60.         import macgen_rsrc
  61.         macgen_rsrc.generate(output, module_dict, debug)
  62.         warnings = macgen_rsrc.warnings(module_dict)
  63.         return warnings
  64.     elif gentype == 'applet':
  65.         import macgen_bin
  66.         architecture = 'fat' # user should choose
  67.         macgen_bin.generate(program, output, module_dict, architecture, debug)
  68.     else:
  69.         raise 'unknown gentype', gentype
  70.  
  71. if __name__ == '__main__':
  72.     main()
  73.